草庐IT

PhpUnit 模拟 : function undefined

全部标签

php - 模拟单元测试 (PHP)

我有一个类:classFoo{functiongetCurrentBar(){$model=Query::findByPk($this->getSession()->get('current_bar'));//Pseudocode...return$model;}}所以在我的应用程序中基本上一次有一个柱,它作为一个整数存储在session中。我经常调用一个辅助函数来查找模型实例,它会进行数据库查询。也有缓存,但现在不重要了。我的问题是:如何用对它进行单元测试?我测试的一些类需要这个。我想我可以更改session以包含ID,但这意味着我需要在数据库中有一个相应的模型。最好的方法是添加方法

PHPUnit:如何测试远程 Postgres 服务器上的数据库交互?

我正在尝试对我创建的类进行单元测试,但大多数类都处理数据库。我已经获得了非数据库相关的类,可以在本地进行很好的测试,但是当涉及到使用数据库时,尤其是远程时,我感到很困惑。该指南显示使用PDO访问似乎已转储到XML文件的本地数据库,所以它对我没什么用,因为我的数据库在亚马逊云中并使用pg_*函数连接到Postgres数据库。是否有任何类似情况的好例子或者任何人都可以提供任何帮助?我不知道我是否应该在文件中包含我的数据库的本地版本或连接到远程服务器。如果我必须连接,我需要做什么才能使其正常工作?结论项目架构师和我进行了调查,我们确定最好实现ORM,因为没有对数据库的抽象。在此之前,数据库测

PHPUnit:使用多个数据集测试函数的最佳方法是什么?

假设我有以下类(class):classFoo{staticfunctionbar($inputs){return$something;}}现在,在测试类中我有以下结构:classFooTestextendsPHPUnit_Framework_TestCase{functiontestBar(){$result=Foo::bar($sample_data_1);$this->assertSomething($result);$result=Foo::bar($sample_data_2);$this->assertSomething($result);$result=Foo::bar(

php - 如何让 Netbeans PHPUnit 代码覆盖率在 Windows 上运行?

我正在尝试获取Netbeanscodecoveragechecking功能工作。我在WindowsXAMPP设置上使用PHP,并设置了PHPUnit,它似乎可以很好地运行单元测试。当我右键单击我的项目并选择“代码覆盖率>收集并显示代码覆盖率”时,它会在底部显示一个小栏,上面写着“0%”,并提供运行测试和获取报告的选项。我运行了测试并检查了报告,但它仍然是0%。如果我检查报告,它说“没有数据-你运行你的代码了吗?”我试过重新运行测试,但它仍然这样做。我也尝试过只运行该项目,并且还“调试”该项目无济于事。关于该主题的最新信息很难获得,但根据那里的PHPUnit文档判断couldbeanis

php - 我怎样才能模拟 PHP 的疯狂全局?

如果我有一个文件a.php我无法编辑。然后运行​​phpa.php会很好地打印出1。但是如果我有b.php:然后运行​​phpb.php不会打印任何内容。我可以在include"a.php"之前键入什么来使其行为相同而无需编辑a.php?(显然不同于定义$a。在我的真实示例中,它必须适用于复杂的a.php)。 最佳答案 尝试在您的新函数中添加一个全局变量:functionb(){global$a;include"a.php";}此刻我想知道PHP是否将$a视为您的b()函数的本地。附录:为了回应您的评论,您似乎需要获取您的inclu

使用 Mockery 进行 PHP 单元测试和模拟

这可能是我对模拟的误解。我真的很感激关于为什么模拟一个不存在或存在的类是一件好事的解释?示例场景:假设我们有一个类依赖于第二个类的输出,我们更改了输出格式或其他格式。这不会让我们的测试保持成功,尽管它们在第一类中已经过时了吗? 最佳答案 答案是肯定的!如果您尊重代码中的某些可测试性原则,则可以将一个方法与同一类中的其他方法隔离开来。这就是单元测试的目标。看这个例子:months()/12);}publicfunctionmonths(){//Databasecalloranythingelse,it'sablackbox!}}cla

php - 如何使用 phpunit-selenium 设置元素属性

我想做这样的事情://pseudocode$this->byCssSelector('p')->setAttribute('attributename','attributevalue');如何在phpunit-selenium中做到这一点? 最佳答案 您需要使用execute()执行javascript并使用setAttribute()设置属性:$this->execute(array('script'=>"document.getElementById('my_id').setAttribute('name','value');

php - 为什么即使在使用 PHP 删除 HTML 实体后,它们仍会显示在 iPhone/iPhone 模拟器上?

我正在向来自iPhone的请求发送一个JSON编码的响应。在少数值中存在一些HTML实体。我尝试使用stripslashes()和html_entity_decode()在这样的值(value)观上。在浏览器中,我能够获得正确的JSON响应,即没有这些HTML实体,但是当在iPhone或iPhone模拟器上看到相同的响应时,HTML实体再次显示。我该如何解决这个问题?有人可以帮忙吗?如果您需要,我可以为您提供必要的代码。谢谢。 最佳答案 使用http://php.net/manual/en/function.strip-tags.p

php - 仅在使用 PHPUnit 时找不到类

我正在使用Symfony2(2.7.3)应用程序进行测试,但页面Controller无法加载类仅当从PHPUnit(4.8.6)发送请求时。测试看起来像这样://AppBundle/Tests/Controller/PagesAvailableTest.phprequest('GET','/contact');//Throwstheerror}}并在使用$phpunit-capp/运行时抛出此错误:PHPFatalerror:Class'AppBundle\Entity\ContactMessage'notfoundinSymfonyRoot/src/AppBundle/Control

php - Symfony3 phpunit xml

嘿,在我的Symfony3项目中安装了PhpUnit,当我在我的终端bin/phpunit-capp中运行时,我得到了这个错误:CouldnotloadXMLfromemptystring用谷歌搜索,结果发现我需要在我的app/目录中应用一个phpunit.xml文件,所以我这样做了,它看起来像这样:../src/*/*Bundle/Tests../src/*/Bundle/*Bundle/Tests-->../src../src/*/*Bundle/Resources../src/*/*Bundle/Tests../src/*/Bundle/*Bundle/Resources../s